package cn.edu.cqut.base.util;

import android.os.Handler;

/**
 * 网络访问请求类
 * */
public class ConnectionUtil {

	private static Handler handler = new Handler();

	/**发送数据给服务器*/
	public static void send(CallBack callBack) {
		new BaseThread(callBack).start();
	};

	/**
	 * 公共的线程调用
	 */
	private static class BaseThread extends Thread {
		private CallBack callBack = null;
		private String result = null;

		public BaseThread(CallBack callBack) {
			this.callBack = callBack;
		}

		@Override
		public void run() {
			// 处理提交前的处理
			handler.post(new Runnable() {
				@Override
				public void run() {
					callBack.handleEmpty();
				}
			});
			try {
				// 在这里提交数据
				result = callBack.sendData();
			} catch (Exception e) {
				// 处理错误
				handler.post(new Runnable() {
					@Override
					public void run() {
						callBack.handleError(result.toString());
					}
				});
			}
			// 处理正确的结果
			if (result != null) {
				handler.post(new Runnable() {
					@Override
					public void run() {
						try {
							callBack.handleSuccess(result.toString());
						} catch (Exception e) {
							e.printStackTrace();
							LogUtil.error("解析数据失败!数据：" + result.toString());
						}
					}
				});
			}

		}
	}

	/**
	 * 处理线程回调接口
	 */
	public interface CallBack {
		/** 线程开始执行时回调方法 */
		public void handleEmpty();

		/** 发送数据到服务器调用方法,返回服务器回传数据 */
		public String sendData() throws Exception;

		/** 提交数据成功时回调方法,传入服务器返回的数据 */
		public void handleSuccess(String result) throws Exception;

		/** 提交数据失败时回调方法，传入错误的消息 */
		public void handleError(String errorMessage);
	}
}
